Communication systems allow calls to be made between two or more user terminals over a communications network. As well as transmitting audio data over the communications network between the users in a call, video data can also be transmitted between the users in the call.
Calls can be one-to-one calls, meaning that just two users are involved in the call. In a one-to-one call, data streams representing the call data (e.g. audio data and video data) can be transmitted directly between the two users involved in the call. In some communication systems, each user may transmit data to and receive data from, a central server in the communications network. The central server may control the call.
Alternatively, calls can be group calls (or “multiparty” calls), meaning that more than two users are involved in the call. In group calls, one of the users may be designated as the host of the group call (the host user is often the user who has initiated the group call). Audio data streams from each user in the group call can be transmitted to the host user. The host user then mixes the audio streams and transmits a mixed audio data stream to each of the users in the group call, such that each user in the group call receives audio data from each of the other users in the group call. Where the call is a group video call, in order for each user of the group call to receive video data from each of the other users in the group call, each user can transmit a video data stream to a server and the server can then re-transmit the video streams to each of the users in the group call. The server, rather than the host user, distributes the video data streams to avoid placing a large bandwidth burden on the host user in the communications network. Video data streams usually comprise larger quantities of data than audio data streams.
In one example, the communication system is a packet-based communication system which allows the user of a device, such as a personal computer, to communicate across a communications network such as the Internet. Packet-based communication systems include voice over internet protocol (“VoIP”) communication systems. These systems are beneficial to the user as they are often of significantly lower cost than fixed line or mobile networks. This may particularly be the case for long-distance communication. To use a VoIP system, the user must install and execute client software on their device. The client software provides the VoIP connections as well as other functions such as registration and authentication.
When a call is established, the establishment process involves transmitting control information between the users to authenticate each user to the other user(s) in the call, such that the call can be allowed to proceed. The call may proceed in a session in which a signalling channel is used to transmit control signals for the call. For example, when a call is established signalling information is transmitted between the users on a signalling channel. A call may be dropped when an active decision has been made to render it dropped. This active decision may be based on thresholds on different types of failure. For example, a call may be deemed dropped if no (e.g. voice) data is received for 15 seconds (the length of time before a call is deemed dropped may be configurable), or the timeout on a command delivery on the signalling channel occurs. Another trigger for determining that a call is dropped may be a specific signal received from a low level network stack, such as if Transmission Control Protocol (TCP) is used for signalling on the signalling channel and the OS notifies the client that the TCP session is dropped. In order for the call to be re-established, after it has been dropped, the users in the call will have to repeat the establishment process for re-establishing the call. At least one of the users in a dropped call can select to re-establish a call with the other users in the dropped call. When a particular user does select to re-establish a dropped call, each of the other users in the call will receive an incoming call request from that particular user and if they accept the call request then the call can be re-established.
As an example, a call may be dropped because one of the following conditions is true: a) no data stream has been received in the last 15 seconds; b) a command has been sent on a signalling channel that was not acknowledged within 40 seconds; or c) the signalling channel for the session was dropped. The signalling channel may be independent of the data streams on a logical level. However, the signalling channel is not necessarily independent from the data streams on a network level (e.g. the same User Datagram Protocol (UDP) or Transmission Control Protocol (TCP) connection may carry data and also signalling commands).
Calls may be dropped frequently. This is particularly true for users with poor network connections or at particular times when there is a large amount of data transmission on the communications network. It can be frustrating for a user when a call that he is participating in is dropped.